package com.flyqiu.common.sc.calculate;

import com.flyqiu.common.sc.FlyQiuSCContext;

import java.math.BigDecimal;

/**
 * 最大值计算类。
 * 实现了数值最大值的计算功能。
 */
public class FlyQiuMaxCalculate extends FlyQiuNumBaseCalculate {

    public static final String CALCULATE_TYPE_MAX = "max";

    /**
     * 获取默认值。
     *
     * @return 默认值，为 Double.MIN_VALUE 的 BigDecimal 表示
     */
    @Override
    public BigDecimal getDefVal() {
        return BigDecimal.valueOf(Double.MIN_VALUE);
    }

    /**
     * 获取计算类型。
     *
     * @return 计算类型的字符串表示，为 "max"
     */
    @Override
    public String calculateType() {
        return CALCULATE_TYPE_MAX;
    }

    /**
     * 计算最大值。
     *
     * @param context 上下文对象，包含数据源大小和当前行索引
     * @param cur     当前值
     */
    @Override
    public void calculate(FlyQiuSCContext<?> context, BigDecimal cur) {
        if (cur == null) {
            return;
        }
        cacheVal = cacheVal.max(cur);
    }
}
